总体规划介绍和几个在scheme中使用的算法简述
总体规划
工作流程如下:
1.恶意软件提取过程(DMGM算法 【这个将在第二部分进行介绍】)
-
恶意软件代码像素化
用8bit的无符号整数读恶意软件二进制文件,通过灰度图像达到可视化
-
纹理描述提取
通过使用GIST算法,得到320维的特征描述
2.DELSH(Distributed ELSH)过程
- 偏移量的选取
- 预处理:剔除重复和排序
- 精确计算目标特征向量和候选向量集的欧式距离
- 根据查询条件【比如:距离阀值】,过滤后返回查询结果
DMGM算法
第一步:恶意软件像素化(B2M算法)
- 用8bit无符号整数读取二进制文件
- 整理成二维队列
- 以【0,255】为范围绘制灰度图(灰度图的宽定长,高由文件大小决定)
【不同的部分(二进制片段)的恶意软件表现出独特的图像纹理。可以在各种原始二进制片段及其可视化的灰度图像的详细分类中发现这个规律】
第二步:基于_GIST_的纹理描述
-
一旦灰度图绘制完毕,就可以通过纹理描述来阐述这个恶意软件。
-
此处使用的是GIST算法。
-
GIST算法的核心思想是:构建一个低维表示的场景,这个场景不需要任何形式的分割。
-
优化:将场景中的占主体的空间结构用一组感性维度来表示,这些维度可以可靠地估计使用光谱和粗定位信息。
DELSH算法
特性:
-
允许UDF的抽象键值对
-
实时处理
-
分布式流处理系统 / 拥有连续性的Map-Reduce版本
具体实现
1.建立哈希表将使键值对和每个数据点一一对应。
【Key是数据点哈希作用后的桶,Value是数据点本身】
2.键值对随机分布在组机中以保证可以在每个机器上有相同key的键值对
3.对于每个查询点,首先生成与查询点对应的若干(键、值)对。
【BLSH:每张哈希表,key是查询点导向的哈希桶】
【ELSH:每个偏移量,key是偏移量导向的哈希桶】
4.这些根据查询点生成的若干键值对,由机器根据他们的key来判断被发送并进行处理。
这些机器包含所有导向同样查询点桶或者偏移量桶的数据点。在和查询点导向相同key的数据点范围内进行查询并报告临近点。
算法证明
设_S为一组N数量的数据点,Q为一组查询点_。【数据传送在Map-Reduce中以批的方式,在DELSH中以实时流的方式。】
在(c,r)-NN问题中,为了不失算法的普适性和简化符号含义,我们设_**r = 1 / c **_【这个关系可以通过缩放得到】
设LSH函数集H = (H1…Hk),k的大小由Theorem 1 决定。当1 ≤ i ≤ k时,Hi(v) = (aiv + bi) / W。ai是一个D维向量,同时每个ai的目录是由标准高斯N(0,1)分布决定;bi ∈ R,均从【0,W】之间进行选取。
设Γ函数:R^d -> R^k,Γ = (Γ1……Γk),当1 ≤ i ≤ k时,Γi(v) = (aiv + bi) / W
故Hi(.) = [Γi(.)]
由于在并行运算中会采用多张哈希表,为了解释清楚,我们在此只选用_一张哈希表和随机选取一个哈希函数_来作为LSH函数。
在基于键值对的分布式系统中,从键域到可到达机器域的哈希函数,毫无疑问是被用以决定负责每个键值对的机器。
为了阐述清晰,将这种导向简单化,即_负责一个(键,值)数据元素的机器就是id = key_ 的机器。
【在RelatedWork中也有相关详细阐述ELSH的分布式实现】
-
对于任意数据点p ∈ S,将生成键值对(H(p),p) 并送到机器H(p)。
-
对于每一个查询点q,生成基于q 的偏移量q + δi (1 ≤ i ≤ L),对于每一个生成的偏移量,将生成键值对(H(q + δi),q) 并送到机器H(q + δi)。
-
又对于q ∈ Q,生成键值对(H(q),q),并送到机器H(q)
-
又 H(q + δi) = H(q)
故当1 ≤ i ≤ L时,H(q + δi)= X, 机器X将会拥有所有的数据点H(q + δi)。
对于任意查询点q,机器检索所有满足H(p)= X的查询点p,同时X距离q 的范围在cr之内。
这个会通过在DELSH中的UDF或者在Map/Reduce中的Reducer来运行。